/*
 * Alloy Analyzer
 * Copyright (c) 2002 Massachusetts Institute of Technology
 *
 * The Alloy Analyzer is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * The Alloy Analyzer is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with the Alloy Analyzer; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package alloy.bool;

/**
 * Constant Boolean formula: true or false
 */
final class GBF_Const extends BooleanFormula {
    final boolean val;

    GBF_Const(boolean val) { this.val = val; }
    int getNumVars() { return 0; }
  
    protected Object handleVisitor(GBF_V visitor) { return visitor.forConst(this); }

    protected boolean checkConstantValued() { return true; }
  
    public boolean equals(Object obj_) {
	return obj_.getClass().equals(this.getClass()) &&
	    ((GBF_Const)obj_).val == this.val;
    }
    public String toString() { return String.valueOf(val); }

    /**
     * Simplify this boolean formula using the given partial assignment.
     * Return a reference to the simplified version of the boolean formula
     * (recall that {@link BooleanFormula}s are immutable).  This method
     * provides a more efficient implementation than {@link BooleanFormula#simplify}.
     */
    public BooleanFormula simplify(PartialAssignment pa_) {
	return this;
    }
}


